/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ac.persistence;
import ac.entities.Tanque;
import java.io.IOException;
import java.sql.SQLException;
import com.ibatis.sqlmap.client.SqlMapClient;
import java.util.ArrayList;

/**
 * Gestiona la persistencia de tanques en la base de datos
 * @author prometheus
 */
public class PersistTanque {

    /**
     * crea un nuevo registro de tanque
     * @param t el tanque a ser creado
     * @return true si la operación fue exitosa
     */
    public boolean insertTanque (Tanque t) {
        boolean resultado = false;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertTanque", t);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return resultado;
        }
    }

    /**
     * Busca el ultimo id de tanque
     * @return el mayor id
     */
    public int ultimoTanque() {
        int resultado = 0;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            resultado = (Integer) sqlMap.queryForObject("ultimoTanque");
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return resultado;
        }
    }

    /**
     * busca todos los tanques registrados
     * @return todos los tanques
     */
    public ArrayList<Tanque> todosLosTanques() {
        ArrayList<Tanque> tanques = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            tanques = (ArrayList) sqlMap.queryForList("todosLosTanques");
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return tanques;
        }
    }

    public boolean updateTanque (Tanque t) {
        boolean result = false;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.update("updateTanque", t);
            result = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return result;
        }
    }

    public ArrayList<Tanque> buscarTanquesEspecie (int idEspecie) {
        ArrayList<Tanque> result = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            result = (ArrayList) sqlMap.queryForList("buscarTanquesEspecie", idEspecie);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return result;
        }
    }

    public Tanque buscarTanqueActualAnimal(int idAnimal) {
        Tanque result = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            result = (Tanque) sqlMap.queryForObject("buscarTanqueActual", idAnimal);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return result;
        }
    }

    public Tanque buscarTanqueId(int idTanque) {
        Tanque result = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            result = (Tanque) sqlMap.queryForObject("buscarTanqueId", idTanque);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return result;
        }
    }
}
